// 逆向思维，不去对每个数字进行质因数分解，而是枚举每个数的倍数，看看有多少个数是该数的倍数
// 注意纸条上的数字可能相等
#include <cstdio>

using namespace std;

const int N = 1e6 + 10;

int n;
int a[N];
int cnt[N], s[N];

int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; ++i) scanf("%d", &a[i]), ++cnt[a[i]];

  for (int i = 1; i < N; ++i) {
    for (int j = i; j < N; j += i) {
      s[j] += cnt[i];
    }
  }
  for (int i = 0; i < n; ++i) printf("%d\n", s[a[i]] - 1);
  return 0;
}
